package example.documentbased.editorModule.controller
{
	import example.documentbased.editorModule.common.MenuItem;
	import example.documentbased.mainModule.models.vo.DocumentVO;
	import example.documentbased.mainModule.models.vo.EditorVO;
	
	import org.etherframework.common.command.ICommand;
	import org.etherframework.controller.IReactiveCommand;
	import org.etherframework.core.context.Context;

	public interface IEditorController
	{
		function withData(data:*):IEditorController;
		
		function withContext(context:Context):IEditorController;
		
		function getSetEditorCommand(editor:EditorVO):IReactiveCommand;
		
		function getCreateDocumentCommand():IReactiveCommand;
		
		function getEditDocumentCommand(document:DocumentVO):IReactiveCommand;
		
		function getUpdateDocumentCommand(document:DocumentVO):IReactiveCommand;
		
		function getSaveDocumentCommand(document:DocumentVO):IReactiveCommand;
		
		function getSaveAsDocumentCommand(document:DocumentVO):IReactiveCommand;
		
		function getCloseDocumentCommand(document:DocumentVO, isSafe:Boolean = true):IReactiveCommand;
		
		function getOpenDocumentCommand(document:DocumentVO):IReactiveCommand;
		
		function getSelectDocumentCommand():IReactiveCommand;
		
		function getSetCurrentDocumentCommand(document:DocumentVO):IReactiveCommand;
		
		function getCloseAllDocumentsCommand():IReactiveCommand;
		
		function getSaveAllDocumentsCommand():IReactiveCommand;
		
		function getSaveEditorCommand(editor:EditorVO):IReactiveCommand;
		
		function getChangeEditorNameCommand(editor:EditorVO):IReactiveCommand;
		
		function getRefreshAllCommand():IReactiveCommand;
		
		function getApplyMenyItemCommand(item:MenuItem):IReactiveCommand;
		
		function getUpdateEditorMenuCommand():ICommand;
		
		function getDeleteDocumentCommand(document:DocumentVO):IReactiveCommand;
	}
}